package com.idc.resource.util;

import lombok.extern.slf4j.Slf4j;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import java.io.IOException;
import java.io.InputStream;

/**
 * 文件base64转换工具
 * Created by Lijing on 2017/7/12.
 */
@Slf4j
public class FileBase64Util {

    /**
     * base64字符串转换成byte数组
     * @param base64 base64字符串
     * @return byte数组
     */
    public static byte[] getByte(String base64){
        BASE64Decoder decoder = new BASE64Decoder();
        byte[] b = new byte[0];
        try {
            b = decoder.decodeBuffer(base64);
            for(int i=0;i<b.length;++i)
            {
                if(b[i]<0)
                {//调整异常数据
                    b[i]+=256;
                }
            }
            return b;
        } catch (IOException e) {
            log.error("base64字符串转换失败");
            return null;
        }
    }

    /**
     * 从输入流中获取内容转换成base64字符串
     * @param in 输入流
     * @return base64字符串
     */
    public static String getBase64(InputStream in){
        byte[] data = null;
        //读取图片字节数组
        try
        {
            data = new byte[in.available()];
            in.read(data);
            in.close();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        //对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);
    }

    /**
     * byte数组转换成base64字符串
     * @param data byte数组
     * @return base64字符串
     */
    public static String getBase64(byte[] data){
        //对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);
    }
}
